## Задача 1

Вводятся данные по книге в виде строки через запятую в формате (некоторые значения могут отсутствовать):

> id, автор, название, цена, год издания

с помощью команд:

```python
t = (int, str, str, float, int)
book = [t[i](x) if t[i] != str else x.strip() for i, x in enumerate(input().split(","))]
```

Например, при вводе:

```python
"1, Пушкин А.С., Python, 2100, 2023"
```
получим список:

```python
book = [1, 'Пушкин А.С.', 'Python', 2100.0, 2023]
```
А при вводе:

```python
"1, Пушкин А.С., Python"
```
список:

```python
book = [1, 'Пушкин А.С.', 'Python']
```

И так далее.

С помощью оператора `match/case` необходимо определить шаблоны для выделения следующей информации:

* автор, название
* автор, название, цена
* автор, название, год издания
* автор, название, цена, год издания

* Первый шаблон срабатывает, если есть `только автор и название`; 
* второй, если появляется `еще и цена`; 
* третий, если есть `автор, название, год издания`, но нет `цены`; 
* последний, если имеются `все данные`.

При срабатывании шаблона вывести на экран строку "Yes". 

Если ни один из шаблонов не сработал, то вывести строку "No".

Тестовые данные:

```python
s1 = "1, Пушкин А.С., Python, 2100, 2023"  # шаблон 4 YES
s2 = "2, Зингаро. Д, Python без проблем, 1000.0, 2022" # шаблон 4 YES
s3 = "3, Бейдер Дэн" # NO
s4 = '4' # NO
s5 = '5, Яворски Михаил, Python. Лучшие практики и инструменты, 1500.1, 2021' # шаблон 4 YES

```

## Задача 1a измените шаблонизатор 

для выделения следующей информации с дополнительными проверками:

* автор, название (автор - не менее 6 символов, название - не менее 10 символов)
* автор, название, цена (автор не менее 6 символов, цена - положительное число)
* автор, название, год издания (год издания от 2020 и выше)
* автор, название, цена, год издания (цена - положительное число и год издания от 2020 и выше)

* Первый шаблон срабатывает, если есть только автор и название;
* второй, если появляется еще и цена;
* третий, если есть автор, название, год издания, но нет цены;
* последний, если имеются все данные.

При срабатывании шаблона вывести на экран строку "Yes". Если ни один из шаблонов не сработал, то вывести строку "No".


## Задача 2

Имеется следующий фрагмент программы с функцией `parse_json` и словарем `json_data`:

```python
def parse_json(data):
    match data:
        case ...

    return ...

json_data = {
  'id': 2,
  'access': False,
  'data': [
    '26.05.2023',
      {
        'login': '1234',
        'email': 'xxx@mail.com'
      },
      2000, 
      56.4
      ]
  }

```

С помощью оператора `match/case` в функцию `parse_json` добавьте в самое начало шаблон для выделения значения ключа `access` с проверкой на тип `bool` и для выделения даты (первое значение списка) из поля `data` с проверкой, что `data` является списком.
Возвратите выделенные два значения в виде кортежа в формате `(access, date)`.

```python

print (*parse_json(json_data)) # Результат False 26.05.2023

```

## Задача 3

Имеется следующий фрагмент программы с функцией `parse_json` и словарем `json_data`:

```python
def parse_json(data):
    match data:
        case {'id': ids, 'data': [_, {'login': login}, _, _]}:
            return ids, login

    return None

json_data = {
    'id': 2, 'access': True,
    'data':
        ['26.05.2023',
         {'login': '1234', 'email': 'xxx@mail.com'},
         2000, 56.4
         ]
}
```

С помощью оператора match/case в функцию parse_json добавьте в самое начало шаблон для выделения значений ключей login и email с проверкой, что они являются строками и при условии, что поле access принимает значение True. Возвратите выделенные два значения в виде кортежа в формате (login, email).
